package com.bjsxt.livegoods.buyaction.service.service.impl;

import com.bjsxt.livegoods.buyaction.service.service.BuyactionService;
import com.bjsxt.livegoods.dao.order.OrderDao;
import com.bjsxt.livegoods.dao.product.ProductDao;
import com.bjsxt.livegoods.entity.Order;
import com.bjsxt.livegoods.entity.Product;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Service
public class BuyactionServiceImpl implements BuyactionService {

    @Autowired
    private ProductDao productDao;

    @Autowired
    private OrderDao orderDao;

//    @Autowired
//    private LivegoodsMessagePublisher messagePublisher;

    @Override
    public Map<String, Object> buyaction(String id, String user) {
        Map<String, Object> result = new HashMap<>();
        // 主键查询商品数据。 判断查询的商品状态是否是未出租。
        Product product = productDao.findById(id);
        if(product.getStatus().equals("1")){
            // 已被其他用户抢购，返回错误结果。
            result.put("status", 500);
            result.put("msg", "手慢了，已被其他抢购。");
        }

        // 维护一个订单对象
        Order order = new Order();
        order.setHouseType(product.getInfo().get("type") + " - " + product.getHouseType());
        order.setImg(product.getImg());
        order.setRentType(product.getRentType());
        order.setTitle(product.getTitle());
        order.setCommentState("0");
        order.setCreateTime(new Date());
        order.setPrice(product.getPrice());
        order.setUserPhone(user);
        order.setProductId(product.getId());

        // 修改商品数据（状态）
        boolean isUpdated = productDao.updateProduct(product);
        if(!isUpdated){
            // 更新失败。可能是商品被其他用户抢购。
            result.put("status", 500);
            result.put("msg", "手慢了，已被其人抢购。");
        }

        // 保存订单
        orderDao.insertOrder(order);

        result.put("status", 200);
        result.put("msg", "预定成功！");

        return result;
    }
}
